; conections domain:
; Csaba Toth 

(define (domain connections)
	(:requirements :strips :typing :adl :preferences)
	
	(:types
		t_burglar					- t_agent
		t_door t_floor				- t_stepable
	)
	
	(:predicates
		(connected ?pos1 - t_stepable ?pos2 - t_stepable)	
			; pos2 is directly reachablepos1
		(agent_at_position ?agent - t_agent ?position - t_stepable)
	)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; actions:
;;
;;;; maping_move		- moves the selected agent from one stepable position 
;;;;						(door has been removed) to another if there is
;;;;						a connection between them with the right direction
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	(:action maping_move
		:parameters
		(
			?agent		- t_agent
			?old_pos	- t_stepable
			?new_pos	- t_stepable
		)
		:precondition
		(and
			(agent_at_position ?agent ?old_pos)
			(connected ?old_pos ?new_pos)
		)
		:effect
		(and
			(agent_at_position ?agent ?new_pos)
			(not (agent_at_position ?agent ?old_pos))
		)
	)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)

